import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

// 导入reset.css
import "./assets/style/reset.css"

// 引入element组件
import './comp/index'
import { isLogined } from '@/api/index'
Vue.config.productionTip = false

// 如果在Vue2开发中遇到公共函数，就可以把它添加到Vue函数原型上
// 以后可以通过this调用  例如： this.formatime(时间)
Vue.prototype.formatime = function (date) {
  // 检查参数是否存在
  if (!date) {
    return '';
  }

  // 检查是否已经是 Date 对象
  if (!(date instanceof Date)) {
    date = new Date(date);
  }

  // 检查日期是否有效
  if (isNaN(date.getTime())) {
    return '';
  }

  return date.toLocaleString();
}


// 定时验证token的函数
async function validateToken() {
  const token = localStorage.getItem("AUTO_TOKEN");
  console.log('定时校验token')
  if (token) {
    try {
      const resData = await isLogined({ token });
      // console.log(resData)
      if (!(resData.code == 200 && resData.msg === '用户登录在线状态')) {
        // token无效，清除并跳转到登录页
        localStorage.removeItem("AUTO_TOKEN");
        router.push('/login');
      }
    } catch (error) {
      // 网络错误，清除token并跳转
      // console.error('Token验证失败:', error);
      localStorage.removeItem("AUTO_TOKEN");
      router.push('/login');
    }
  } else {
    // 没有token，跳转到登录页
    router.push('/login');
  }
}
//（每隔5分钟检查一次）
const tokenValidationInterval = setInterval(() => {
  validateToken();
}, 5 * 60 * 1000);

// 将定时器ID保存到Vue原型上，以便后续可能需要清除
Vue.prototype.$tokenValidationInterval = tokenValidationInterval;

new Vue({
  router,
  store,
  render: h => h(App),
  beforeDestroy() {
    // 清除定时器
    if (this.$tokenValidationInterval) {
      clearInterval(this.$tokenValidationInterval);
    }
  }
}).$mount('#app')


// 设置网页标题
document.title = "博客管理系统"